<?php
include_once('inc/functions.inc.php');

if(!isEmpty(getParam('operation'))) {
    
    switch(getParam('operation')) {
        case 'e': {
            fntCxpNCEmpresas($db);
            break;
        }
        case 'f': {
            fntCxpNCFactura($db);
            break;
        }
        case 'fp': {
            fntCxpNCProveedorGet($db);
            break;
        }
        case 'ffp': {
            fntCxpNCFechaPago($db);
            break;
        } 
        case 's': {
            fntCxpNCGrabar($db);
            break;
        }
    }
    die();
}

function fntCxpNCEmpresas($db) {
    fntEmpresasDraw($db, "sltCxpNCEmpresas");
    ?>
    <script type="text/javascript">
    $("select[name='sltCxpNCEmpresas']").change( function() {
        $("input[name='txtfacturasId']").val("");
        fntCxpNCFactura();
        fntCxpNCIngresadas();
    });
    </script>
    <?php
}
function fntCxpNCFactura($db) {

    $intEmpresa = getParam("sltCxpNCEmpresas");
    date_default_timezone_set("America/Guatemala");
    $strFecha = date("d-m-Y");
    ?>
    <div style="width: 500px; height: 20px; float: left;">&nbsp;</div>
    <div style="width: 100px; height: 30px; float: left;"><b>Proveedor</div>
    <div style="width: 20px;  height: 30px; float: left;"><div id="divNCProveedorCambio" style="float: left; margin-right: 0.3em; cursor: pointer;" class="ui-icon ui-icon-transferthick-e-w"></div></div>
    <div style="width: 350px; height: 30px; float: left;">
        <input type="hidden" name="hdnNCProveedor" value="" style="width: 350px;" />
        <input type="text" name="txtNCProveedor" value="" style="width: 350px;" />
        <div id="divNCProveedor"></div>
        <script type="text/javascript">
        $("input[name='txtNCProveedor']").autocomplete({
            source: "admin_cuentas_x_pagar_nc_data.php?operation=fp&sltCxpNCEmpresas=<?php print $intEmpresa; ?>",
            minLength: 1,
            select: function( event, ui ) {
                $("input[name='hdnNCProveedor']").val(ui.item.id);
                $("#divNCProveedor").html(ui.item.value);
                $(this).hide();
                $("#divNCProveedor").show();
                $("#divNCProveedorCambio").show();
                fntCxpNCFechaPago();               
            }
        });
        $("#divNCProveedorCambio").click(function() {
            $("#divNCProveedor").hide();
            $("input[name='txtNCProveedor']").show().select();
        });
        </script>
    </div>
    <div style="width: 500px; height: 20px; float: left;">&nbsp;</div>    
    <div style="width: 120px; height: 30px; float: left;"><b>Tipo de documento</b></div>
    <div style="width: 130px; height: 30px; float: left;">
        <select name="sltNCTipoDocumento" style="width: 100px;" onchange="">
            <option value="NC">NC</option>
        </select>                                 
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Serie</b></div>
    <div style="width: 150px; height: 30px; float: left;"><input type="text" name="txtNCSerie" value="" style="width: 120px;" /></div>
    <div style="width: 120px; height: 30px; float: left;">&nbsp;</div>
    <div style="width: 130px; height: 30px; float: left;"><input type="text" name="txtNCTipoDocumento" value="NC" style="width: 100px; display: none;" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>No. documento</b></div>
    <div style="width: 150px; height: 30px; float: left;"><input type="text" name="txtNCNoDocumento" value="" style="width: 120px;" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Fecha</b></div>
    <div style="width: 150px; height: 30px; float: left;"><input type="text" name="txtNCFecha" value="<?php print $strFecha; ?>" style="width: 120px; text-align: center;" maxlength="10" title="Formato: dd-mm-aaaa" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Fecha de pago</b></div>
    <div style="width: 150px; height: 30px; float: left;"><div id="divNCFechaPago"></div><input type="text" name="txtNCFechaPago" value="" style="width: 120px; text-align: center;" maxlength="10" title="Formato: dd-mm-aaaa" readonly="readonly" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Valor</b></div>
    <div style="width: 150px; height: 30px; float: left;">
        <input type="text" name="txtNCValor" value="" style="width: 120px; text-align: right;" />
        <script type="text/javascript">
        $('input[name="txtNCValor"]').blur(function() {
            $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: 2, symbol: strSimbolo });
        }).keyup(function(e) {
            var e = window.event || e;
            var keyUnicode = e.charCode || e.keyCode;
            if (e !== undefined) {
                switch (keyUnicode) {
                    case 16: break; // Shift
                    case 17: break; // Ctrl
                    case 18: break; // Alt
                    case 27: this.value = ''; break; // Esc: clear entry
                    case 35: break; // End
                    case 36: break; // Home
                    case 37: break; // cursor left
                    case 38: break; // cursor up
                    case 39: break; // cursor right
                    case 40: break; // cursor down
                    case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                    case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                    case 190: break; // .
                    default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, symbol: strSimbolo, eventOnDecimalsEntered: true });
                }
            }
        });
        </script>
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Tipo de compra</b></div>
    <div style="width: 150px; height: 30px; float: left;">
        <select name="sltNCTipoCompra" style="width: 120px;">
            <option value="bien">Bien</option>
            <option value="servicio">Servicio</option>
        </select>
    </div>    
    <div style="width: 100px; height: 30px; float: left;"><b>Incluye ISR</b></div>
    <div style="width: 150px; height: 30px; float: left;">Si<input type="radio" name="radNCIncluyeIva" value="1" checked="checked">&nbsp;No<input type="radio" name="radNCIncluyeIva" value="0"></div>
    <div style="width: 250px; height: 30px; float: left;">&nbsp;</div>
    <div style="width: 100px; height: 60px; float: left;"><b>Descripción</b></div>
    <div style="width: 400px; height: 60px; float: left;"><textarea name="txtNCDescripcion" style="width: 370px; height: 45px;"></textarea></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Total a pagar</b></div>
    <div style="width: 400px; height: 30px; float: left;">
        <input type="text" name="txtNCTotal" value="" style="width: 120px; text-align: right;" readonly="readonly" />
        <script type="text/javascript">
        $('input[name="txtNCTotal"]').blur(function() {
            $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: 2, symbol: strSimbolo });
        }).keyup(function(e) {
            var e = window.event || e;
            var keyUnicode = e.charCode || e.keyCode;
            if (e !== undefined) {
                switch (keyUnicode) {
                    case 16: break; // Shift
                    case 17: break; // Ctrl
                    case 18: break; // Alt
                    case 27: this.value = ''; break; // Esc: clear entry
                    case 35: break; // End
                    case 36: break; // Home
                    case 37: break; // cursor left
                    case 38: break; // cursor up
                    case 39: break; // cursor right
                    case 40: break; // cursor down
                    case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                    case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                    case 190: break; // .
                    default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, symbol: strSimbolo, eventOnDecimalsEntered: true });
                }
            }
        });
        </script>
    </div>
    <div style="width: 500px; height: 20px; float: left;">&nbsp;</div>
    <div style="width: 500px; height: 30px; float: left; text-align: center;"><button id="btnNCAgregar" type="button">Agregar</button></div>
    <script type="text/javascript">
    $( function() {
        
        $("select[name='sltNCTipoDocumento']").change( function() {
            
            if( $(this).val() == "Otros" ) {
                $("input[name='txtNCTipoDocumento']").val("");
                $("input[name='txtNCTipoDocumento']").show();
            }
            else {
                $("input[name='txtNCTipoDocumento']").val($("select[name='sltNCTipoDocumento']").val());
                $("input[name='txtNCTipoDocumento']").hide();
            }
            
            
        });
        
        $("input[name='txtNCFecha']").datepicker({
            changeMonth: true,
            changeYear: true,
            monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],
            dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
            dateFormat: 'dd-mm-yy'
        });
        $("#btnNCAgregar").button({
        icons: {
            primary: "ui-icon-plusthick"
        }
        }).click( function () {
            fntCxpNCGrabar();
        });
        $("input[name='txtNCFecha']").change( function() {
            fntCxpNCFechaPago();
        });
        $("input[name='txtNCValor']").change( function() {
            $("input[name='hdnNCRetencion']").val("0");
            $("input[name='txtNCRetencionValor']").val("0");
            $("input[name='txtNCRetencionPorcentaje']").val("0");
            fntCxpNCTotal();
        });        
        //Retencion
        $("input[name='radNCRetencion']").change( function() {
            
            if( $(this).val() == 1 ) {
                fntCxpNCRetecionDialog();
                $("#divNCRetencionCambio").show();                
            }
            else {
                $("input[name='hdnNCRetencion']").val("0");
                $("input[name='txtNCRetencionValor']").val("0");
                $("input[name='txtNCRetencionPorcentaje']").val("0");
                $("#divNCRetencionCambio").hide();
                fntCxpNCTotal();
            }
            
        });
        $("input[name='txtNCRetencionValor']").change( function() {
            if( $("input[name='txtNCValor']").val()*1 <= $(this).val()*1 ) {
                alert("Valor incorrecto.");
                $(this).val("0");
                $("input[name='txtNCRetencionPorcentaje']").val("0");
            }
            else {
                $("input[name='hdnNCRetencion']").val( $(this).val() );
                sinPorcentaje = ( $("input[name='txtNCRetencionValor']").val()*1 * 100 ) / $("input[name='txtNCValor']").val();
                sinPorcentaje = sinPorcentaje * 100;
                sinPorcentaje = Math.round(sinPorcentaje);
                sinPorcentaje = sinPorcentaje / 100;
                $("input[name='txtNCRetencionPorcentaje']").val(sinPorcentaje);
            }
        });
        $("input[name='txtNCRetencionPorcentaje']").change( function() {
            if( 100 <= $(this).val()*1 ) {
                alert("Valor incorrecto.");
                $(this).val("0");
                $("input[name='txtNCRetencionValor']").val("0");
            }
            else {
                sinValor = ( $("input[name='txtNCRetencionPorcentaje']").val()*1 * $("input[name='txtNCValor']").val() ) / 100;
                sinValor = sinValor * 100;
                sinValor = Math.round(sinValor);
                sinValor = sinValor / 100;
                $("input[name='txtNCRetencionValor']").val(sinValor);
                $("input[name='hdnNCRetencion']").val( sinValor );
            }
        });
        $("#divNCRetencionCambio").click( function(){
            fntCxpNCRetecionDialog();
        });
        //Retencion
    });
    </script>
    <?php
    
}
function fntCxpNCProveedorGet($db) {
        
    $arrResult = array();
    $intEmpresa = getParam("sltCxpNCEmpresas");
    $term = getParam("term");
    $strQuery = "SELECT * FROM cllg_cp_proveedor
                 WHERE (NIT LIKE '%{$term}%' OR RAZON_SOCIAL LIKE '%{$term}%') 
                 AND    FK_EMPRESA = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
        
    if( $rTMP = $db->fetch_array($qTMP) ) {

        do {
            $arrTMP =  array();
            $arrTMP["id"] = $rTMP["NIT"];
            $arrTMP["value"] = $rTMP["NIT"]." - ".$rTMP["RAZON_SOCIAL"];
            
            array_push($arrResult,$arrTMP);
            
        } while ($rTMP = $db->fetch_array($qTMP));
        
    }
    $db->free_result($rTMP);
    
    print json_encode($arrResult);
}
function fntCxpNCFechaPago($db) {
    date_default_timezone_set("America/Guatemala");
    $intEmpresa = getParam("sltCxpNCEmpresas");
    $proveedor = getParam("hdnNCProveedor");
    $fecha = getParam("txtNCFecha");
    $arrFecha = explode("-", $fecha);
    $strQuery = "SELECT * FROM cllg_cp_proveedor
                 WHERE NIT = '{$proveedor}'
                 AND    FK_EMPRESA = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intDiasCredito = 0;
    while( $rTMP = $db->fetch_array($qTMP) ) {
        $intDiasCredito = $rTMP["DIAS_CREDITO"];
    }
    $db->free_result($rTMP);
    $strFechaPago = fntCxpNCSumaFechas($fecha,$intDiasCredito);
    $arrFechaPago = explode("-", $strFechaPago);
    $strFechaPago = $arrFechaPago[2]."-".$arrFechaPago[1]."-".$arrFechaPago[0];
    ?>
    <script type="text/javascript">
    $("input[name='txtNCFechaPago']").val('<?php print $strFechaPago; ?>');
    </script>
    <?php
    
}
function fntCxpNCGrabar($db) {

    $intEmpresa = getParam("sltCxpNCEmpresas");
    $serie = getParam("txtNCSerie");
    $numero = getParam("txtNCNoDocumento");
    $fecha = getParam("txtNCFecha");
    $arrFecha = explode("-", $fecha);
    $fecha = $arrFecha[2]."-".$arrFecha[1]."-".$arrFecha[0];
    $tipo_doc = getParam("txtNCTipoDocumento");
    $valor = getParam("txtNCValor");
    $tipo_compra = getParam("sltNCTipoCompra");
    $inc_iva = getParam("radNCIncluyeIva");
    $reten_iva = getParam("radNCRetencion");
    $retencion = getParam("hdnNCRetencion");
    $descripcion = getParam("txtNCDescripcion");
    $total = getParam("txtNCTotal");
    $proveedor = getParam("hdnNCProveedor");
    $fecha_pago = getParam("txtNCFechaPago");
    $arrFecha_pago = explode("-", $fecha_pago);
    $fecha_pago = $arrFecha_pago[2]."-".$arrFecha_pago[1]."-".$arrFecha_pago[0];
    
    $strQuery = "SELECT * FROM cllg_cp_factura WHERE FK_EMPRESA = '{$intEmpresa}' AND SERIE = '{$serie}' AND NUMERO = '{$numero}'";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    $db->free_result($qTMP);
    if( $intNumRows == 0 ) {
        
        $strQuery = "INSERT INTO cllg_cp_factura
        ( SERIE, NUMERO, FECHA, TIPO_DOCTO, MONTO, TIPO_COMPRA, INC_IVA, RETEN_IVA, RETENCION, DESCRIPCION, TOTAL, ESTADO, FK_PROVEEDOR, SALDO_ANTERIOR, SALDO_ACTUAL, FECHA_PAGO, FK_EMPRESA, CONTRASENA )
        VALUES
        ( '{$serie}', '{$numero}', '{$fecha}', '{$tipo_doc}', '{$valor}', '{$tipo_compra}', '{$inc_iva}', '{$reten_iva}', '{$retencion}', '{$descripcion}', '{$total}', '2', '{$proveedor}', '{$total}', '{$total}', '{$fecha_pago}', '{$intEmpresa}', '0' )";
        $db->query($strQuery);
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 500px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                Datos guardados.
           </div>
        </div>
        <br>
        <script type="text/javascript">
        $('#frmCxpNC').each (function(){
            this.reset();
        });
        $("select[name='sltCxpNCEmpresas']").val("<?php print $intEmpresa; ?>");
        $("#divNCProveedor").hide();
        $("input[name='txtNCProveedor']").show().select();
        $("input[name='hdnNCRetencion']").val("0");
        $("input[name='txtNCRetencionValor']").val("0");
        $("input[name='txtNCRetencionPorcentaje']").val("0");
        $("input[name='hdnNCProveedor']").val("");
        </script>
        <?php
    }
    else {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 500px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                Ya existe factura.
           </div>
        </div>
        <br>        
        <?php        
    }
            
}
function fntCxpNCSumaFechas($fecha,$ndias){
    if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
    list($dia,$mes,$año)=explode("/", $fecha);

    if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
    list($dia,$mes,$año)=explode("-",$fecha);

    $nueva = mktime(0,0,0, $mes,$dia,$año) + $ndias * 24 * 60 * 60;
    $nuevafecha=date("Y-m-d",$nueva);

    return ($nuevafecha);
}
?>